Current graphics data processing includes systems and methods developed to perform specific operations on graphics data, e.g., linear interpolation, tessellation, rasterization, texture mapping, depth testing, etc. During the processing of the graphics data, conventional graphics processors read and write dedicated local memory, e.g., a frame buffer, to access texture maps and frame buffer data, e.g., a color buffer, a depth buffer, and a depth/stencil buffer. For some processing, the performance of the graphics processor is constrained by the maximum bandwidth available between the graphics processing sub-units and the frame buffer. Each graphics processing sub-unit which initiates read or write requests for accessing the frame buffer is considered a “client.”
Various arbitration schemes may be used to allocate the frame buffer bandwidth amongst the clients. For example, a first arbitration scheme arbitrates amongst the clients by giving the sub-unit with the greatest quantity of pending requests the highest priority. A second arbitration scheme arbitrates amongst the clients based on the age of the requests. Specifically, higher priority is given to requests with the greatest age, i.e., the request which was received first amongst the pending requests. Each of these schemes is prone to error, because the age or quantity of requests does not incorporate information about the latency hiding ability of a particular client. Furthermore, age is measured in absolute time, whereas the actual needs of a particular client may also depend on the rate at which data is input to the client and output to another client.
A third arbitration scheme arbitrates amongst the clients based on a priority signal provided by each client indicating when a client is about to run out of data needed to generate outputs. Unfortunately, for optimal system performance, it is not necessarily the case that a client that is running out of data should be given higher priority than a client that is not about to run out of data. If the client that is running out of data is up-stream from a unit which is also stalled, then providing data to the client would not allow the system to make any additional progress.
A fourth arbitration scheme arbitrates amongst the clients based on a deadline associated with each request. The deadline is determined by the client as an estimate of when the client will need the data to provide an output to another client. Determining the deadline may be complicated, including factors such as the rate at which requests are accepted, the rate at which data from the frame buffer is provided to the client, the rate at which output data is accepted from the client by another client, and the like. The fourth arbitration scheme is complex and may not be practical to implement within a graphics processor.
Accordingly, it is desirable to have a graphics processor that arbitrates between various clients to improve the combined performance of the clients and is practical to implement within the graphics processor.